1. Field of the Invention
The invention described herein relates generally to the development, maintenance, and installation of software programs by using operations on a computer to enable a user to create and manage computer program code, e.g., hardware description language program code. At a high level this includes maintaining software modules or files, integrating source code, and source code version management, as well as establishing that integrated program code modules demonstrates certain desirable properties. These properties include consistency to enable reuse of previously compiled units, thereby facilitating reuse.
2. Background Art
When compiling hardware design language source code (e.g., VHDL, Verilog) that consists of several modules or compilation units, it might be advantageous to reuse the results of previous compiler runs. This is especially the case for compilation units or modules in time consuming applications, such as logic synthesis. The prior art tools use the time date stamp check to ensure that the pre-compiled results are up to date, that is, that the stored results were created from the latest source files.
The problems arise because if the pre-compiled modules are up-to-date, there might be inconsistencies caused by one or more of:                1. Different compiler options used when compiling these modules:        2. Different environmental options defined on the command line that effect the output of the compiler. For example, the environmental variables can be used to conditionally include or omit constructs from the source code. These environmental variables are defined on the command line for the compiler and can be treated as an option to the compiler that takes a set of values.        
For example, in a logic synthesis environment, a piece of the hierarchy could be compiled register scan chain inserted and the other portion not, resulting in a misfunctional output.
Thus, a clear need exists for an automated process of storing and retrieving options and their values from compiled units, ensuring safe reuse of pre-compiled units. These options are grouped in sets, named consistency rules, which are either user defined or hard coded inside the compiler. These consistency rules constitute the basis on which pre-compiled units will be reused or not.